Cet atelier consiste à déployer et configurer un pare-feu pfSense dans une infrastructure réseau virtualisée sur Proxmox, puis à mettre en place un tunnel VPN OpenVPN permettant un accès distant sécurisé au réseau interne.
Le pfSense dispose de deux interfaces : une carte WAN sur le réseau de la Livebox (192.168.1.0/24) et une carte LAN sur le VNET étudiant (172.26.206.0/24). Un serveur Apache Linux est déployé derrière le pfSense. La partie 2 introduit une PKI complète (CA, certificats serveur et utilisateur) et un serveur OpenVPN en mode accès distant avec double authentification.
Le réseau étudiant (VNET 172.26.206.0/24) doit être isolé et protégé par un pare-feu avant d'être exposé vers l'extérieur. Sans pfSense, aucun filtrage ni contrôle du trafic entrant/sortant n'est possible.
Déploiement depuis l'ISO netgate-installer sur Proxmox. La carte WAN est configurée en DHCP sur 192.168.1.0/24 avec réservation statique de l'IP 192.168.1.225 sur la Livebox. La carte LAN est fixée à 172.26.206.250 sur le VNET étudiant. Hostname : pfSense-206, domaine : home.arpa.
- Créer la VM sur Proxmox avec deux interfaces réseau :
net0(vlan992) etnet1(vlan206) - Installer pfSense CE depuis l'ISO, assigner WAN → net0 et LAN → net1
- Configurer l'IP LAN à 172.26.206.250/24 via le menu console
- Accéder à l'interface web et renseigner le hostname et le domaine dans System → General Setup
- Réserver l'IP 192.168.1.225 sur la Livebox via l'adresse MAC de l'interface WAN
Il faut une machine cible derrière le pfSense pour valider le filtrage, la redirection de port et, plus tard, l'accès VPN. Cette machine doit pouvoir accéder à Internet via le pfSense (NAT sortant).
Déploiement d'une VM Linux Debian sur le VNET 206. Le serveur Apache est installé et une page personnalisée est créée : « Bonjour, je m'appelle Adrien Blaize / Je suis en BTS SIO ». L'interface réseau est configurée en statique avec la passerelle pfSense.
- Configurer
enp0s18avec l'IP statique 172.26.206.80/24, passerelle 172.26.206.250 - Installer Apache2 :
apt install apache2 - Modifier
/var/www/html/index.htmlavec la page personnalisée - Vérifier l'accès Internet depuis le serveur via le pfSense (NAT sortant automatique)
Le serveur Apache est sur un réseau privé (172.26.206.80). Pour qu'il soit accessible depuis l'extérieur, le pfSense doit rediriger les requêtes entrantes sur un port public vers ce serveur interne — c'est le principe du Port Forwarding (NAT/PAT).
Règle créée dans Firewall → NAT → Port Forward : tout trafic TCP entrant sur le port 26206 de l'interface WAN est redirigé vers 172.26.206.80:80. La Livebox relaie le port 26206 vers l'IP WAN du pfSense (192.168.1.225).
- Firewall → NAT → Port Forward → Add
- Interface : WAN · Protocole : TCP · Port destination : 26206
- Redirect IP : 172.26.206.80 · Redirect Port : 80
- pfSense crée automatiquement la règle pare-feu associée
- Tester depuis un poste externe :
http://90.65.104.37:26206→ page Apache ✅
Pour mettre en place un VPN avec authentification par certificat, il faut d'abord une Autorité de Certification (CA) qui signera tous les certificats du système. Sans CA, impossible de garantir l'identité des parties qui se connectent.
Création d'une CA interne auto-signée CA-BLAIZE dans System → Certificates → Authorities. Common Name : domblaize.local, Organisation : BLAIZE & Co, localisation France / Rhône-Alpes / Lyon. Durée de validité : 10 ans.
- System → Certificates → Authorities → Add
- Method : Create an internal Certificate Authority
- Renseigner Common Name, Organisation, Country (FR), State, City
- Key length : 2048 bits · Digest : SHA256 · Lifetime : 3650 jours
Le serveur OpenVPN et les clients VPN doivent chacun posséder un certificat signé par la CA pour pouvoir s'authentifier mutuellement. Sans ces certificats, la liaison chiffrée SSL/TLS ne peut pas s'établir.
Deux certificats créés et signés par CA-BLAIZE : le certificat serveur Certificat-OpenVPN-AB (type Server Certificate, Common Name Firewall-Pfsense-AB) et le certificat utilisateur Certificat-VPN-Adrien généré lors de la création du compte adrien.blaize dans System → User Manager.
- System → Certificates → Certificates → Add — Type : Server Certificate, signé par CA-BLAIZE
- RSA 2048 bits · SHA256 · 3650 jours · Common Name : Firewall-Pfsense-AB
- System → User Manager → Add — créer le compte adrien.blaize avec mot de passe
- Cocher « Click to create a user certificate » → nommer Certificat-VPN-Adrien, signer par CA-BLAIZE
Il faut configurer le serveur VPN pour qu'il accepte les connexions des clients distants, les authentifie par certificat ET par identifiants (double facteur), et leur donne accès au réseau interne 172.26.206.0/24.
Serveur « Accès distant OpenVPN AB » créé en mode SSL/TLS + User Auth sur UDP port 20694, interface WAN. Tunnel IPv4 : 10.10.206.0/24. Réseau local redirigé : 172.26.206.0/24. Chiffrement AES-256-GCM avec CHACHA20-POLY1305 en fallback.
- VPN → OpenVPN → Servers → Add
- Mode : Remote Access (SSL/TLS + User Auth) · Interface : WAN · Port : 20694 · Protocole : UDP
- CA : CA-BLAIZE · Certificat serveur : Certificat-OpenVPN-AB
- Tunnel Network : 10.10.206.0/24 · Local Network : 172.26.206.0/24
- Chiffrement : AES-256-GCM, CHACHA20-POLY1305 · Auth : SHA256 · DH : 2048
- DNS domain : domblaize.local · Connexions simultanées : 2 · auth-nocache activé
Par défaut, pfSense bloque tout le trafic entrant. Sans règles explicites, les clients VPN connectés ne pourront ni joindre le serveur pour s'authentifier, ni accéder aux ressources du réseau interne.
Quatre règles créées pour autoriser précisément les flux nécessaires, sans ouvrir inutilement le réseau :
- WAN → UDP 20694 : « Accès Distant OpenVPN » — permet aux clients de s'authentifier
- OpenVPN → ICMP → 172.26.206.0/24 : ping vers tout le LAN pour tests de connectivité
- OpenVPN → TCP:22 → 172.26.206.80 : accès SSH au serveur Apache
- OpenVPN → TCP/UDP:80 → 172.26.206.80 : accès HTTP au serveur web
- OpenVPN → TCP:3389 → 172.26.206.80 : « Autoriser RDP via VPN » — bureau à distance
Installation du paquet openvpn-client-export pour générer le fichier .ovpn et l'installeur Windows pour le compte adrien.blaize. Le fichier pointe vers 90.65.104.37:20694. Connexion depuis un poste Windows — IP VPN attribuée : 10.10.206.6. La ligne Initialization Sequence Completed confirme le tunnel opérationnel.
- Ping ✅ — ICMP vers 172.26.206.80 : 4 paquets, 0 perdu, latence 2–4 ms
- SSH ✅ — Connexion PuTTY vers 172.26.206.80:22 validée via le tunnel
- HTTP ✅ — Page Apache accessible via IP interne depuis le navigateur
- RDP ✅ — Bureau à distance xRDP opérationnel (1,01 MiB de trafic constaté)
- Wireshark ✅ — Paquets UDP chiffrés port 20694 visibles sur l'interface physique
| Étape | Réalisé | Résultat |
|---|---|---|
| pfSense installé (2 interfaces) | ✓ Fait | WAN 192.168.1.225 · LAN 172.26.206.250 |
| Serveur Apache déployé | ✓ Fait | Accessible sur 172.26.206.80, page personnalisée |
| Redirection de port NAT/PAT | ✓ Fait | Port 26206 → 172.26.206.80:80 depuis Internet |
| PKI créée (CA + 2 certificats) | ✓ Fait | CA-BLAIZE · Certificat serveur · Certificat utilisateur |
| Serveur OpenVPN configuré | ✓ Fait | SSL/TLS + User Auth · UDP 20694 · AES-256-GCM |
| Règles pare-feu | ✓ Fait | 5 règles · Ping, SSH, HTTP, RDP via tunnel VPN |
| Tunnel VPN validé | ✓ Fait | IP VPN 10.10.206.6 · 5 protocoles testés avec succès |